package pe.gob.mimp.web.controller;

import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;

import pe.gob.mimp.model.*;
import pe.gob.mimp.model.web.EntidadWeb;
import pe.gob.mimp.model.web.TablaWeb;
import pe.gob.mimp.service.*;
import pe.gob.mimp.validator.EntidadValidator;

@Controller
@RequestMapping(value = "/tabla")
public class TablaController {
	@Autowired
	private CombosService combos;
	@Autowired
	private EntidadService entidadService;
	@Autowired
	private MenuUsuarioService menuUsuarioService;
	private String nombreTabla;

    public String getNombreTabla() {
        return nombreTabla;
    }

    public void setNombreTabla(String nombreTabla) {
        this.nombreTabla = nombreTabla;
    }



	@RequestMapping(method = RequestMethod.GET)
	public String showCasoForm(
			Model model,
			@RequestParam(value = "nombreTabla", required = false) String nombreTabla,
                        @RequestParam(value = "idTabla", required = false) Long idTabla,
			HttpServletRequest request) {
		TablaWeb tablaWeb = new TablaWeb();
		HttpSession session = request.getSession();
		List<MenuUsuario> menu;

		if (session.getAttribute("login") == null) {
			return "redirect:login";
		}
		menu = menuUsuarioService.getMenuUsuarioPorUserName((String) session.getAttribute("login"));
                model.addAttribute("mostrar", false);
                if(nombreTabla!=null){
                    if(!nombreTabla.equals("")){
                        this.nombreTabla=nombreTabla;
                        tablaWeb.setNombreTabla(nombreTabla);
                        if(idTabla!=null){
                            tablaWeb.setTabla(combos.getTablaParametricaPorId(idTabla));
                            tablaWeb.getTabla().setIdTabla(idTabla);
                            model.addAttribute("edita", true);
                        }else{
                            model.addAttribute("edita", false);
                        }                
                        model.addAttribute("mostrar", true);
                    }                    
                }

		model.addAttribute("tablaWeb", tablaWeb);
		model.addAttribute("menu", menu);
		model.addAttribute("opciones", menu);
		return "tabla";
	}


	@RequestMapping(method = RequestMethod.POST)
	public String grabaFormulario(Model model,TablaWeb tablaWeb) {  
            if(tablaWeb.getTabla().getIdTabla()==null){
                tablaWeb.getTabla().setNombreTabla(nombreTabla);
            }
            tablaWeb.getTabla().setValor(tablaWeb.getTabla().getValor().toUpperCase());
            combos.saveTablaParametrica(tablaWeb.getTabla());            
            return "redirect:tabla?nombreTabla="+nombreTabla;
        }

	@RequestMapping(value = "/listado", method = RequestMethod.GET)
	public @ResponseBody
	List<TablaParametrica> getMotivoss(HttpServletRequest request) {
		List<TablaParametrica> lista = combos.getLista(nombreTabla);
		HttpSession session = request.getSession();

		if (session.getAttribute("login") == null) {
			return null;
		}
		return lista;
	}
}
